The mission statement for my product is to be a one-stop solution for entities of fitness ecosystem. It caters to fitness service providers by designing solutions for end-to end management of members, staff and potential members.
A fitness firm that:
User settings & preferences: Broadly, the settings and preferences apply to members as well as staff, with options to set preferred time slots, nature of activities applicable (example, as instructor, what sessions can be provided vs as member, what sessions does member want to take), indicate or communicate lack of availability for a pre-planned session or requested slot. However, the settings have many more nuances for the service provider, where any staff can be mapped to multiple locations / facilities, specific programs and packages can be made available at only designated locations, tasks can be allocated to concerned staff with due date, priority and activity link (Activity link in this context pertains to booking call, SMS, consultation or session).
Calendar: This is a calendar specific to the fitness organization, wherein the slots or sessions would be synced for each trainer. The pre-decided slots will be part of the shared calendar between trainer and trainees. User can move the slot and change the trainer as per availability or even pre-book an activity specifying class type and timing with an option to choose or reserve instructor. The instructor can also update a pre-booked session, accept any request of pre-booking made by users, update one's availability and add new activity(ies) into the calendar.
Reminders & updates: These are applicable to members and staff, and work similar to push notifications. Automation rules can be configured by staff to send reminders for a scheduled session or a booked task in the calendar. Also, when an event is updated (example if a session gets moved to another slot or cancelled), this is intimated to all the involved parties through SMS or MMS modes.
Campaigns & communication: Apart from the above messages, there is option for members to initiate peer-to-peer communication with other members, including trainers. Campaigns operate similar to the above mentioned reminders, however this is applicable to existing or potential leads. Message clusters are configured depending on the stage of lead.
Attendance & trainer effectiveness tracking: Barcode scanning capture attendance of both trainer & members. Staff presence is tracked through check-in, check-out times. There is provision for staff to mark attendance for specific sessions in which case, the calendar will also get synced automatically.
Monitoring leads: Leads module captures data points regarding what is the source of lead, at what stage is it currently and what activities and automation need to be pursued further with each of them through task allocation window. Once successfully converted, the entity will be migrated to member profile.
Payment workflow: This includes invoice generation, facilitating payment cycles (waiver codes corresponding to user cluster; coupon codes, referral benefits if any; credit for the charges pertaining to communications, postal letters to be factored in before making the final payment), storing payment preferences, refunds related to cancellation and staff payouts. The invoices are categorised into unpaid and paid categories with details on due date and due amount. This will enable automation rules to be configured subject to status of payment.
Report generation: Broadly this covers sales related reports (example: gross sales, growth trajectory, net payment received, conversion ratio for leads, forecasted sales for next month, CTA for campaigns), member related reports (attendance, activation, cancellation, attrition, transfers, lifespan, re-instated members, referrals, check-ins), payment reports, performance and ratings of product and staff.
Core has integrations with multiple sub-systems to specifically handle a certain module or functionality. Calendar being one of its core features, seamless synchronisation between all the components & data binding seem to be prioritised, making Angular their preferred choice for front-end development in web. Also, the solution was primarily designed for web, & has chosen a mobile-optimised experience. With Angular, the development team can create applications that run across various platforms.
The experience chosen is mobile-optimised with selective functionality developed for mobile version. Majority of the features and functionality are for the service providers whose primary source of accessing the solution is via desktop. This was the only customer segment that the application started off with also (Meaning, there was no member or trainee module in the application).
Subsequently, modules for trainees to message, book and update slots got added. Out of these, the messaging functionality has a higher scope of usage in mobile and has been developed specifically for mobile. Cross-platform is the platform mode for mobile development & React Native is the technology used. This module still has limited functionalities and owing to lower scale of its usage, this seems like a good choice. Although the current functionality can probably be supported via hybrid platform as well, if improvement in UX and mobile adoption for staff is expected to increase in the longer run, then cross-platform or native is the better choice.
Design does not seem to be optimal. The layout and overview seems like too many things are packed onto a single screen and considering the number of functionalities crunched into a page, it is very likely that there are way too many network calls per page. The API framework used for network calls is RESTful across the application. There does not seem to be much scope for discoverability in any workflow anyway, and even if this is considered in the future development cycles, REST would be able to cater to this. Keeping a tight check on latency via choice of API architecture does not seem to be a good tradeoff.
There are multiple web-hook configurations as well. This is used to sync event or session details between Core and Connect, trigger reminder messages or intimate about any update to the scheduled events via Connect to intended members. The customer data is synced via Cron that runs on a daily once schedule.
The overall ClubReady web solution is currently in the form of two applications: Core & Connect. When there was a need to set up messaging and communication module, Connect was acquired and then 'ClubReady Connect' integrated with Core. Business logic for each of the application, including Core follows monolithic architecture. The server side is programmed in PHP Laravel. The choice of language seems justified, especially from the angle of relevance of queue systems & event broadcasting for Core.
All web interactions or user sessions are recorded, which will be used for log generation. These are expected to provide key inputs on user's journey to the developers at ClubReady as well as help in easy resolution of any technical issues faced. Logrocket is the tool used to auto-capture user interaction in the application.
The invoice generation is carried out inhouse and the module has integration with payment gateways to facilitate the online payment mode via cards. Payment preferences captured here are maintained in caching layer.
Broadly, data can be classified into 6 modules: user related data points (member, staff, leads), messages and communications sent out, recording of user interactions, metadata for messages and videos, payment related information & schedule specific values. All preferences & basic details about users are cached, with a daily once sync rate.
β
Module | Nature | Volume | Velocity |
---|---|---|---|
User | Structured | Medium | Medium |
Messages | Semi-structured | Medium | Low |
Screen Recording | File | High | Medium |
Logs | Semi-structured | Low | Low |
Payment | Structured | Medium | Low |
Invoice | Semi-structured | Medium | Low |
Schedule | Structured | Low | Low |
β
All the reports generated are also an outcome of the user, payments and messages modules. The data stored is processed to calculate the required data points and then visualizations projected to the clients. The dashboards are not interactive currently and the report generation activity follows a static structure.
Largely, the data has a structured form and SQL is used to store this data. Messages although initially stored in SQL are moved to AWS Open Search every 3 days. All the screen recordings captured are moved to Amazon S3. Devops is completely configured via AWS tools: Amazon RDS is used for database management & Elastic Beanstack is used for queuing and deploying the code and environment in AWS.
βProposal is to build a referral workflow for the fitness firms. Currently, the lead module captures the source of lead and this includes referrals too. And one of the reports tracks referral conversion rate as well. However, apart from these two legs, there isn't any other journey for this.
Members will have option to invite any of their contacts to book a trial session: i.e., they should be able to initiate this first SMS from the mobile application with an option to add suggestion of one session and/or fitness instructor. The SMS will have a web URL, that will redirect customer to a UI. If there was a suggestion, then the same would be filtered and shown first. However, the referred person will be able to see categories of all activities at the fitness club. In the latter case, user can first choose a location or city and the categories of physical sessions will be sorted based on proximity & relevance, whereas online ones will be based on relevance. (Note: Relevance in this context is a function of popularity, i.e., the number of slots per week, the class booking ratio & attendance ratio) The referred entity will have option to express interest in any and further book a trial session. Confirmation SMS will be triggered to the user with a URL, which the entity can use to make any updates to the event if required. This event and entity will be stored in the lead module, from where staff can further configure any automation workflow to further trigger SMS or reminders.
Since the product has entered matured scaling stage, members who have attended even one session can generate the initial referral SMS. The benefits will be adjusted in the next payment cycle for member(s) (i.e., the initial member and subsequently if the entity becomes a member then them also), once the entity attends a trial session. Members should be able to track the stage of referral (Note: the various stages being if they have booked a trial session yet, if they have updated the booking to a later date, if they have booked and cancelled, if there is no response) and should be able to re-trigger SMS with suggestions of another session or instructor.
JTBD is to help each of the fitness client of ClubReady bring in more members through referral program. This journey will require:
The above mentioned workflow is a proposal for initial launch of this module. Considering the new module and the overall Core solution:
β
β
β
β
Brand focused courses
Great brands aren't built on clicks. They're built on trust. Craft narratives that resonate, campaigns that stand out, and brands that last.
All courses
Master every lever of growth β from acquisition to retention, data to events. Pick a course, go deep, and apply it to your business right away.
Explore foundations by GrowthX
Built by Leaders From Amazon, CRED, Zepto, Hindustan Unilever, Flipkart, paytm & more
Crack a new job or a promotion with the Career Centre
Designed for mid-senior & leadership roles across growth, product, marketing, strategy & business
Learning Resources
Browse 500+ case studies, articles & resources the learning resources that you won't find on the internet.
Patienceβyouβre about to be impressed.